本发明揭示了一种用于快闪存储器纠错的LDPC码的解码装置,该装置包括量化单元、解码参数存储单元、运算单元及判断单元,其中量化单元直接从快闪存储器的数据端口得到数字信号,量化单元对此数字信号进行量化之后将结果输出至运算单元,运算单元根据量化单元与解码参数存储单元存储的解码参数利用最小和算法进行解码,判断单元根据解码的结果进行判断是否调整解码参数,如需调整,则反馈至解码参数存储单元调整解码参数并输出给运算单元以调整后的解码参数进行解码。
1.一种用于快闪存储器纠错的低密度奇偶校验LDPC码解码装置,其特征在于:该用于快闪存储器纠错的LDPC码解码装置包括量化单元、解码参数存储单元、运算单元及判断单元,其中量化单元直接从快闪存储器的数据端口得到数字信号,量化单元对此数字信号进行量化之后将结果输出至运算单元,运算单元根据量化单元与解码参数存储单元存储的解码参数利用最小和算法进行解码,判断单元根据解码的结果进行判断是否调整解码参数,如需调整,则反馈至解码参数存储单元调整解码参数并输出给运算单元以调整后的解码参数进行解码;其中,运算单元采用的解码算法为最小和算法,其解码过程中的信息迭代运算如下:
L ( c i ) =log Pr ( c i = 0 | y i ) Pr ( c i = 1 | y i ) ]]>L(r
ji)=Π
i′α
i′j·min(β
i′j)·scale_factor
L ( q ij ) = L ( c i ) + Σ j ′ ∈ c i j L ( r j ′ i ) ]]> L ( Q i ) = l ( c i ) + Σ j ∈ c i L ( r ji ) ]]>其中,i代表信息节点的位置,j代表校验节点的位置,c为未出错的原码字,y为出错后的码字,L(c
i)为接收到y
i的情况下,原码字中c
i的LLR值,为c
i为0的概率与c
i为1的概率比值的log值,L(r
ji)为校验节点传递给信息节点的信息,L(q
ij)为信息节点传递给校验节点的信息,L(Q
i)为信息节点在每次迭代中的最终信息,若L(Q
i)>0,则在当前迭代中,c
i=0,否则c
i=1;在第一次迭代中,L(q
ij)=L(Q
i),α为当前迭代中L(q
ij)的符号,β为当前迭代中L(q
ij)的绝对值,scale_factor为解码参数。
2.如权利要求1所述的用于快闪存储器纠错的LDPC码解码装置,其特征在于:其中量化单元采用6bit量化,最高位的1bit代表符号,其余5bit代表绝对值,则量化边界值为011111和111111。
3.如权利要求2所述的用于快闪存储器纠错的LDPC码解码装置,其特征在于:在整个解码过程中,先将scale_factor设为一默认值,开始迭代运算,同时观察是否出现特定状态,其中特定状态为迭代次数超过第一阈值,且相邻迭代结果的翻转比特数超过第二阈值,由此将解码参数递减或递增。
4.如权利要求3所述的用于快闪存储器纠错的LDPC码解码装置,其特征在于:当出现特定状态时的策略是,终止当前迭代,将scale_factor递减一次,重新开始迭代计算,未出现特定状态时,则继续当前迭代直到最大迭代次数。
5.如权利要求4所述的用于快闪存储器纠错的LDPC码解码装置,其特征在于:在递减分支的每次迭代中,始终需要观察是否出现特定状态,当出现特定状态时的策略是,终止当前迭代,将scale_factor递减一次,重新开始迭代计算,未出现特定状态时,则继续当前迭代直到最大迭代次数,直至scale_factor等于预设的最小值,如达到预设的最小值,则以此最小值进行迭代运算。
6.如权利要求5所述的用于快闪存储器纠错的LDPC码解码装置,其特征在于:在递增分支中,每次迭代都需要达到最大迭代次数,如果当前迭代失败,则将scale_factor递增一次,重新迭代计算,直至scale_factor达到预设的最大值,之后直接判断是否达到最大迭代次数。
7.如权利要求6所述的用于快闪存储器纠错的LDPC码解码装置,其特征在于:scale_factor的初始默认值为0.625,如在递减过程中,scale_factor依次为0.5,0.46875,在递增过程中,scale_factor依次为0.6875,0.75。【技术领域】本发明涉及一种适用于快闪存储器纠错的LDPC(Lowxa0Densityxa0Parityxa0Check,低密度奇偶校验)码的解码装置,特别是指就用于nand型快闪存储器纠错的LDPC码的解码装置。【背景技术】由于近年来对nand型快闪(nandflash)存储器容量需求的大幅度提升和工艺水平的进步,MLC,TLC技术被广泛采用。相对于SLC,MLC和TLC的nandflash存储器随着编程和擦除次数的增加,出错概率大幅上升,因此需要更强的纠错算法来保证数据的可靠性。传统的nandflash控制器采用BCH纠错算法,但BCH算法的解码时间与纠错能力成指数关系,如果需要纠正大量的错误比特,BCH算法的解码时间将变得难以容忍。LDPC码以其有利于硬件实现的迭代解码算法和与码长成线性关系的解码时间等优势,已经逐渐成为nandflash存储器中纠错算法的更好选择。现有的用于nandflash存储设备的LDPC码解码算法多选用软判决法,包括sum-product(和积)算法、min-sum(最小和)算法等,以提高解码性能。但软判决算法需要引入软输入,即概率分布信息。这就需要在nandflash存储器端口增加额外的比较电路,并增加额外的运算来得到nandflash单元阈值电压的概率分布信息,但这样不利于降低硬件设计的复杂度、降低功耗及提高运算速度。【发明内容】本发明的目的在于提供一种用于快闪存储器纠错的LDPC码解码装置,用以解决现有的用于nandflash存储器纠错的LDPC码解码装置硬件设计复杂、功耗较高及运算速度较低的问题。为实现上述目的,实施本发明的用于快闪存储器纠错的LDPC码解码装置包括量化单元、解码参数存储单元、运算单元及判断单元,其中量化单元直接从快闪存储器的数据端口得到数字信号,量化单元对此数字信号进行量化之后将结果输出至运算单元,运算单元根据量化单元与解码参数存储单元存储的解码参数利用最小和算法进行解码,判断单元根据解码的结果进行判断是否调整解码参数,如需调整,则反馈至解码参数存储单元调整解码参数并输出给运算单元以调整后的解码参数进行解码。依据上述主要特征,运算单元采用的解码算法为最小和算法,其解码过程中的信息迭代运算如下:
L ( c i ) =log Pr ( c i = 0 | y i ) Pr ( c i = 1 | y i ) ]]>L(r
ji)=Π
i′α
i′j·min(β
i′j)·scale_factor
L ( q ij ) = L ( c i ) + Σ j ′ ∈ c i j L ( r j ′ i ) ]]> L ( Q i ) = L ( c i ) + Σ j ∈ c i L ( r ji ) ]]>其中,i代表信息节点的位置,j代表校验节点的位置,c为未出错的原码字,y为出错后的码字,L(c
i)为接收到y
i的情况下,原码字中c
i的LLR值,为c
i为0的概率与c
i为1的概率比值的log值,L(r
ji)为校验节点传递给信息节点的信息,L(q
ij)为信息节点传递给校验节点的信息,L(Q
i)为信息节点在每次迭代中的最终信息,若L(Q
i)>0,则在当前迭代中,c
i=0,否则c
i=1。在第一次迭代中,L(q
ij)=L(Q
i),α为当前迭代中L(q
ij)的符号,β为当前迭代中L(q
ij)的绝对值,scale_factor为解码参数。依据上述主要特征,其中量化单元采用6bit量化,最高位的1bit代表符号,其余5bit代表绝对值,则量化边界值为011111和111111。依据上述主要特征,在整个解码过程中,先将scale_factor设为一默认值,开始迭代运算,同时观察是否出现特定状态,其中特定状态为迭代次数超过第一阈值,且相邻迭代结果的翻转比特数超过第二阈值,由此将解码参数递减或递增。依据上述主要特征,当出现特定状态时的策略是,终止当前迭代,将scale_factor递减一次,重新开始迭代计算,未出现特定状态时,则继续当前迭代直到最大迭代次数。依据上述主要特征,在递减分支的每次迭代中,始终需要观察是否出现特定状态,当出现特定状态时的策略是,终止当前迭代,将scale_factor递减一次,重新开始迭代计算,未出现特定状态时,则继续当前迭代直到最大迭代次数,直至scale_factor等于预设的最小值,如达到预设的最小值,则以此最小值进行迭代运算。依据上述主要特征,在递增分支中,每次迭代都需要达到最大迭代次数,如果当前迭代失败,则将scale_factor递增一次,重新迭代计算,直至scale_factor达到预设的最大值,之后直接判断是否达到最大迭代次数。依据上述主要特征,scale_factor的初始默认值为0.625,如在递减过程中,scale_factor依次为0.5,0.46875,在递增过程中,scale_factor依次为0.6875,0.75。与现有技术相比较,实施本发明的用于快闪存储器纠错的LDPC码解码装置,在初始输入阶段采用硬输入,在解码过程中采用软判决迭代,并动态调整解码参数,可以节省额外的电路和运算周期,并达到较高的解码性能。简化了硬件设计复杂度,降低了功耗,同时也提高了运算速度。【附图说明】图1为实施本发明的解码装置的组成架构示意图;图2(a)和图2(b)为LDPC码的校验矩阵和生成矩阵示意图;图3为本发明采用的硬输入量化方法示意图;图4为最小和解码过程中采用的动态调整解码参数方法的示意图。图5为最小和解码过程中具体实施中的动态调整解码参数方法的示意图。【具体实施方式】请参阅图1所示,为实施本发明的解码装置的组成架构示意图,该解码装置包括量化单元、解码参数存储单元、运算单元及判断单元,其中量化单元从快闪存储器的数据端口得到数字信号,量化单元对此数字信号进行量化之后将结果输出至运算单元,运算单元根据量化单元与解码参数存储单元存储的解码参数利用最小和算法进行解码,判断单元根据解码的结果进行判断是否调整参码参数,如需调整,则反馈至解码参数存储单元调整解码参数并输出给运算单元以调整后的参数进行解码。在具体实施时,所述快闪存储器为nandflash存储器。请参阅图2(a)和图2(b)所示,本发明涉及到的LDPC码是一种线性分组码,其校验矩阵是一个稀疏矩阵。为了便于硬件实现,多采用准循环形式的校验矩阵,其对应的生成矩阵也具有准循环的形式。如图1。其中每个子矩阵均为循环矩阵,即每一行为上一行的循环右移,第一行为最后一行的循环右移。校验矩阵中的每一列对应着一个信息节点,每一行对应着一个校验节点。其解码算法多采用最小和(min-sum)算法,其解码过程中的信息迭代运算如下:
L ( c i ) =log Pr ( c i = 0 | y i ) Pr ( c i = 1 | y i ) ]]>L(r
ji)=Π
i′α
i′j·min(β
i′j)·scale_factor
L ( q ij ) = L ( c i ) + Σ j ′ ∈ c i j L ( r j ′ i ) ]]> L ( Q i ) = L ( c i ) + Σ j ∈ c i L ( r ji ) ]]>其中,i代表信息节点的位置,j代表校验节点的位置,c为未出错的原码字,y为出错后的码字。L(c
i)为接收到y
i的情况下,原码字中c
i的LLR(logxa0likelyhoodxa0ratio)值,即c
i为0的概率与c
i为1的概率比值的log值。L(r
ji)为校验节点传递给信息节点的信息,L(q
ij)为信息节点传递给校验节点的信息,L(Q
i)为信息节点在每次迭代中的最终信息,若L(Q
i)>0,则在当前迭代中,c
i=0,否则c
i=1。在第一次迭代中,L(q
ij)=L(Q
i)。α为当前迭代中L(q
ij)的符号,β为当前迭代中L(q
ij)的绝对值。其中,解码参数(scale_factor)通常取固定值0.8。本发明所采用的量化方法如图3所示,该量化方法是直接从nandflash存储器的数据端口得到的信息为数字信号的“0”和“1”,并不带有概率信息。亦即本发明直接将数字信号看作量化边界值,并按照给定的精度量化,作为最小和解码的初始输入。例如:若在min-sum解码方法中采用6bit量化,最高位的1bit代表符号,其余5bit代表绝对值,则量化边界值为011111和111111,即-32和+32,量化精度为1/32。于是从nandflash存储器端口读到的某个bit若为0,则对应的量化值为011111;若读到的bit值为1,则对应量化值111111。该量化值将作为最小和解码的初始输入L(ci)送入运算单元,避免了通过多次采样求概率分布以得到L(ci)的运算过程。由于采用的硬输入法,是一种极端的信道情况,解码装置在解码迭代过程开始时会出现判决震荡的情况,在几次迭代之后趋于收敛。本发明的解码装置采用改进的最小和(min-sum)算法,在迭代过程中根据判决结果动态调整解码参数,以避免无法收敛而导致的解码失败情况。具体方法可参阅图3所示,在整个解码过程中,先将scale_factor设为默认值0.625,开始迭代运算,同时观察是否出现特定状态(其中特定状态为迭代次数超过第一阈值(如n_iter),且相邻迭代结果的翻转比特数超过第二阈值(如n_flip)的情况),由此进入递减分支或递增分支。当出现特定状态时的策略是:终止当前迭代,将scale_factor递减一次,重新开始迭代计算。未出现特定状态和scale_factor已经达到最小值(0.46875)时的策略是:继续当前迭代直到最大迭代次数。具体地说,可以在未出现特定状态时,则继续当前迭代直到最大迭代次数;或者,未出现特定状态时,则继续当前迭代直到最大迭代次数,直至scale_factor等于预设的最小值,如达到预设的最小值,则以此最小值进行迭代运算。在递减分支的每次迭代中,始终需要观察是否出现特定状态,并据此作出策略调整,直至scale_factor=0.46875。在递增分支中,每次迭代都需要达到最大迭代次数。如果当前迭代失败,则将scale_factor递增一次,重新迭代计算。直至scale_factor达到最大值(0.75)。调整后就直接判断是否达到最大迭代次数,也不再判断是否出现特定情况。在实际的实施中,为了硬件容易实现,scale_factor的递增递减,不是按固定值步进变化的,而是只选用几个特定值:scale_factor的初始默认值为0.625,如在递减过程中,scale_factor依次为0.5,0.46875;在递增过程中,scale_factor依次为0.6875,0.75。具体的调整方法如图4所示。其中scale_factor取0.625作为默认值。其中特定状态为迭代次数超过第一阈值(如n_iter),且相邻迭代结果的翻转比特数超过第二阈值(如n_flip)的情况。在对实施本发明的方案进行仿真的过程中,采用码率为0.9的QC-LDPC码,n_iter=20,n_flip=80。具体动态调整参数的方案如下:1.最小和算法的scale_factor初始值设为0.625,最大迭代次数设为80,开始解码运算,即步骤S001;2.在运算过程中,若在20次迭代内观察到相邻两次运算结果之间翻转的bit数目超过80个,即判断是否出现上述的特定状态,步骤S002,如是,则将scale_factor调整为0.5,即步骤S004,重新迭代并判断是否出现上述的特定状态,步骤S006。3.若没有出现上述的特定状态,继续迭代直至达到最大迭代次数之后判断解码是否失败,步骤S003,如果解码成功,输出最终结果,步骤S005,若解码失败,则将scale_factor调整为0.6875,重新迭代,进入步骤S007;4.在步骤S006中若同样出现了20次迭代内相邻迭代结果间翻转bit超过80个的情况(即特定状态),则将scale_factor调整为0.46875,重新迭代,步骤S011,直到达到最大迭代次数之后判断解码是否失败,步骤S012。若迭代成功,则输出结果,步骤S013;若迭代失败,则给出失败标志,步骤S014;在步骤S007中以scale_factor=0.6875迭代至最大迭代次数之后判断解码是否失败,步骤S008,若迭代成功,则输出最终结果,步骤S009;若迭代失败,将scale_factor调整为0.75,重新迭代,即进入步骤S010,即以scale_factor=0.75迭代至最大迭代次数之后判断解码是否失败,步骤S012。若迭代成功,则输出结果,步骤S013;若迭代失败,则给出失败标志,步骤S014。采用本发明中的动态调整参数的最小和(min-sum)解码算法对码率为0.9的QC-LDPC码进行仿真,随机制造60bit错误,在130195次仿真中,误比特率为1.51e
-7;而不采用动态调整参数方法的传统最小和(min-sum)算法,在相同信道情况下的误比特率为8.31e
-7。采用改进方法后,误比特率下降了81.8%。与现有技术相比较,实施本发明的用于快闪存储器纠错的LDPC码解码装置,在初始输入阶段采用硬输入,即量化单元直接从快闪存储器的数据端口得到数字信号并对此数字信号进行量化,在解码过程中采用软判决迭代,并动态调整解码参数,可以节省额外的电路和运算周期,并达到较高的解码性能。简化了硬件设计复杂度,降低了功耗,同时也提高了运算速度。可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。